package cn.edu.swu.hh;

import java.util.Scanner;

public class Main {
    private static final String IMAGES_DIR = "images"; //图片保存目录
    private static final String LOG_FILE = "download_log.txt"; //下载日志文件

    public static void main(String[] args) {
        //1.确保图片目录存在，否则就创建
        FileUtils.ensureDirectoryExists(IMAGES_DIR);
        //2.创建图片管理器，负责具体业务逻辑
        ImageManager manager = new ImageManager(IMAGES_DIR, LOG_FILE);
        //3.从命令行读取用户输入
        Scanner scanner = new Scanner(System.in);

        //4.主循环：不停显示菜单，直到用户选择退出
        while (true) {
            printMenu();
            System.out.print("请输入选项编号："); //读取用户选择
            String choice = scanner.nextLine().trim();

            switch (choice) {
                case "1": //下载图片
                    System.out.print("请输入图片URL：");
                    String url = scanner.nextLine().trim();
                    if (url.isEmpty()) {
                        System.out.println("URL不能为空。");
                        break;
                    }
                    try {
                        //调用ImageManager下载；返回保存的文件名（自动重命名）
                        String savedName = manager.downloadImage(url);
                        if (savedName != null) {
                            System.out.println("下载成功，文件名：" + savedName);
                        } else {
                            System.out.println("下载失败，请检查URL或网络。");
                        }
                    }catch(Exception e){
                        //downloadImage内部已做异常处理，这里额外兜底保证程序不崩
                            System.out.println("下载失败：" + e.getMessage());
                        }
                        break;

                        case "2": //查看已下载的图片列表
                            manager.listImages();
                            break;

                        case "3": //按名称搜索图片（支持部分匹配）
                            System.out.print("请输入要搜索的图片名：");
                            String name = scanner.nextLine().trim();
                            manager.searchImage(name);
                            break;

                        case "4": //退出程序
                            System.out.println("已退出。");
                            scanner.close(); //释放输入流
                            return; //结束main

                        default: //其他非法输入
                            System.out.println("无效选项，请重新输入。");
                    }
                    System.out.println(); //输出一个空行，美化界面
            }
        }

        //命令行菜单
        private static void printMenu () {
            System.out.println("==========图片下载系统==========");
            System.out.println("1.下载图片");
            System.out.println("2.查看所有图片");
            System.out.println("3.搜索图片");
            System.out.println("4.退出");
        }
    }

